#!/bin/bash
# Comando "mover"
# 
# Opciones y Parámetros
#   Parámetro 1 (obligatorio): archivo origen
#   Parámetro 2 (obligatorio): archivo destino
#   Parámetro 3 (opcional): comando que la invoca
#

#No pueden ser menos de 2 ni mas de 3 parametros
COMANDO="Mover.sh"
if [ $# -gt 3 -o $# -lt 2 ]; then
	Logging.sh $COMANDO "Cantidad de parametros inválida" "E"
	exit 1
fi

##### VARIABLES AUXILIARES #######
directorioDestino="${2%/*}"
ardestino="${2##*/}"

#Chequeo que el primer parametro reibido sea un archivo
if [ ! -f "$1" ]; then 
	if [ $# -eq 3 ]; then
		Logging.sh "$3" "Mover: El origen no existe" "E" #Aca va el log
	fi
	exit 2
fi

#Chequeo si el directorio del destino existe
if [ ! -d "$directorioDestino" ]; then 
        echo "destino no existe"
	if [ $# -eq 3 ]; then
		Logging.sh "$3" "Mover: El directorio destino no existe" "E"
	fi
	exit 3
fi

#Chequear si origen y destino son distintos
if [ "$1" == "$2" ]; then
	if [ $# -eq 3 ]; then
		Logging.sh "$3" "Mover: No se hizo nada porque el origen es igual al destino" "W"
	fi
	exit 0
fi

#Chequear si el archivo destino ya existe en el directorio destino
if [ -f "$2" ]; then #Archivo duplicado
	if [ ! -d "$directorioDestino/dup" ]; then
		mkdir "$directorioDestino/dup"
	fi
	#Veo si no existe ya un archivo en dup con el mismo nombre y segun la extension aumentar el nnn
	nnn=$(ls "$directorioDestino/dup" | grep "^$ardestino.[0-9]\{1,3\}$" | sort -r | sed s/$ardestino.// | head -n 1)
	if [ "$nnn" == "" ]; then #por si todavia no habia ninguna copia del archivo en dup
		nnn=0
	fi
	if [ "$nnn" == "999" ]; then #el numero nnn tiene un rango de 1 a 999
		Logging.sh "$3" "Mover: No se pudo copiar, demasiados archivos duplicados" "E"
		exit 4
	fi
	nnn=$(echo $nnn + 1 | bc -l) #sumo 1 al numero de secuencia
	mv "$1" "$directorioDestino/dup/$ardestino.$nnn"
	if [ $# -eq 3 ]; then
		Logging.sh "$3" "Mover: Archivo $1 duplicado, movido a $rutadestino/dup" "I"
	fi
else
	mv "$1" "$2"
	if [ $# -eq 3 ]; then
		Logging.sh "$3" "Archivo $1 movido correctamente a $2" "I"
	fi
fi
exit 0